import { BasicKeys } from '/@/utils/cache/persistent';
import { CODE_GEN_CFG_KEY } from '/@/enums/cacheEnum';
import { CodeGenConfigParams } from '/@/api/gen/model/CodeGenModel';

/**
 * 缓存生成本地配置
 * @param key  缓存的生成配置key 组成 数据源id::数据库名::数据库表名称
 * @returns
 */
export function getGenConfig(key: string): any {
  const config = getGenConfigCache<CodeGenConfigParams>(CODE_GEN_CFG_KEY);
  return config[key];
}

/**
 * 缓存生成本地配置
 * @param key 缓存的生成配置key 组成 数据源id::数据库名::数据库表名称
 * @param value 具体的配置
 */
export function setGenConfig(key: string, value: any) {
  const config = getGenConfigCache<CodeGenConfigParams>(CODE_GEN_CFG_KEY);
  config[key] = value;
  setGenConfigCache(CODE_GEN_CFG_KEY, config);
}

export function getGenConfigCache<T>(key: BasicKeys) {
  let res = localStorage.getItem(key);
  if (!res) res = '{}';
  return JSON.parse(res) as T;
}

export function setGenConfigCache(key: BasicKeys, value) {
  return localStorage.setItem(key, JSON.stringify(value));
}

export function clearGenConfigCache() {
  return localStorage.removeItem(CODE_GEN_CFG_KEY);
}
